ef.primr <- function(x, ct.ctrl=0.75, na.rm=TRUE)
{
	if(class(x)!="data.frame")     #verificao se o objeto inserido  funo pertence  classe "data.frame".
	{
		stop("\t", "Objeto deve ser de classe data.frame")     #informar uma mensagem de erro quando o objeto no  um "data.frame".
	}
	if(na.rm==TRUE)     #verificao se valores NA devem ser retirados do clculo.
	{
	na.omit(x)     #retira eventuais valores NA presentes.
	}
	data.x <- x[x[,1] > 0,]     #cria um dataframe retirando apenas os valores de cDNA maiores que 0.
	slp <- rep(NA, length=ncol(x))     #cria um vetor para armazenar os valores do slope obtidos na funo for() a seguir.    
	intcpt <- rep(NA, length=ncol(x))     #cria um vetor para armazenar os valores do intercept obtidos na funo for() a seguir. 
	for(i in 2:(ncol(x)))     #funo for() para a gerao dos modelos para cada par de primer e obteno dos valores de intercept e slope.   
	{
		lin.mod <- lm(data.x[,i] ~ log(data.x[,1], base=10))     #cria o modelo linear dos valores de Ct em funo da coluna 1 do data.frame(concentraes de cDNA).
		coef.vector <- coef(lin.mod)     #atribui a um objeto os coeficientes da regresso da rodada(intercept e slope).	
		slp[i] <- coef.vector[2]     #armazena no vetor criado anteriormente os valores de slope de cada rodada da funo for().
		intcpt[i] <- coef.vector[1]     #armazena no vetor criado anteriormente os valores de slope de cada rodada da funo for().
	}
	slope <- slp[-1]     #retira o valor de posio 1 (ocupado por um NA) do vetor slp.
	intercept <- intcpt[-1]     #retira o valor de posio 1 (ocupado por um NA) do vetor intcpt.
	amplification.efficiency <- 10^(-1/slope)     #realiza o clculo da eficincia de amplifiao.

	datactrl.x <- x[x[,1] == 0,]     #cria um dataframe contendo apenas os valores de cDNA iguais a 0, os quais teoriamente no devem apresentar amplificao.
	ctrl <- rep(NA, length=ncol(x))     #cria um vetor para armazenar a mdia dos Ct de cada primer para cDNA=0.
	for(j in 2:(ncol(x)))     #funo for() para a mdia dos valores de Ct de cada primer para cDNA=0.	
	{
		ctrl[j] <- mean(datactrl.x[,j])     #clculo da mdia de Ct de cada primer para cDNA=0. 
	}
	ctrl.d <- ctrl[-1]     #retira o valor da posio 1 (ocupado por um NA) do vetor ctrl.
	quality.control <- ifelse(ctrl.d <= ct.ctrl, "ok", "check.for.contamination")     #testa se a mdia  maior/menor que o argumento ct.ctrl inserido
	primer.name <- colnames(data.x[-1])     #cria um vetor com s com os nomes dos primers.
	output <- data.frame(primer.name, intercept, slope, amplification.efficiency, quality.control)     #cria um data.frame com os vetores especificados
	return(output)     #retorma o data.frame criado, como resultado da funo.
}